/**
 * 获取本地时间字符串（格式：YYYY-MM-DDTHH:mm:ss.sss）
 * @param {Date} date 日期对象
 * @returns {string} 格式化后的时间字符串
 */
function getLocalISOString(date) {
  const offset = date.getTimezoneOffset(); // 分钟数
  const localDate = new Date(date.getTime() - offset * 60 * 1000); // 转成本地时间的 UTC 时间
  return localDate.toISOString().replace('T', ' ').replace('Z', '');
}

/**
 * 计算到下一个指定时间点的毫秒数
 * @param {number} targetHour 目标小时 (0-23)
 * @param {number} targetMinute 目标分钟 (0-59)
 * @returns {number} 到目标时间的毫秒数
 */
function getTimeUntil(targetHour, targetMinute) {
  const now = new Date();
  const target = new Date(
    now.getFullYear(),
    now.getMonth(),
    now.getDate(),
    targetHour,
    targetMinute,
    0,
    0
  );

  // 如果今天的目标时间已过，则设置为明天的目标时间
  if (target <= now) {
    target.setDate(target.getDate() + 1);
  }

  return target.getTime() - now.getTime();
}

module.exports = {
  getLocalISOString,
  getTimeUntil
};